﻿using System.Web.Mvc;

namespace CalendarApp.Filters
{
    public class NoAjaxCacheAttribute : ActionFilterAttribute
    {
        public override void OnActionExecuting(ActionExecutingContext filterContext)
        {
            if (filterContext.RequestContext.HttpContext.Request.IsAjaxRequest() && !filterContext.IsChildAction)
            {

                //filterContext.HttpContext.Response.Cache.SetExpires(DateTime.UtcNow.AddDays(-1));
                //filterContext.HttpContext.Response.Cache.SetValidUntilExpires(false);
                //filterContext.HttpContext.Response.Cache.SetRevalidation(HttpCacheRevalidation.AllCaches);
                //filterContext.HttpContext.Response.Cache.SetCacheability(HttpCacheability.NoCache);
                //filterContext.HttpContext.Response.Cache.SetNoStore();

                // A fenti módszer teljes mértékben megtiltja a böngészőnek, hogy cacheljen, így nem tudna hová nyúlni, ha az oldalunk elérhetetlen vagy offlien módban böngészik.
                // Ezzel ellentétben ha a lejáratot állítjuk vissza, akkor így mégis van honnan vennie az adatot(mert benne lesz a böngésző cache-ben, igaz lejárt dátummal)
                filterContext.HttpContext.Response.Expires = -1;
                base.OnActionExecuting(filterContext);
            }
        }
    }
}